package com.hue.gulimailseckill.schedule;

import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

/**
 * @author 姚凤桥
 * @Date 2022/1/12 10:14
 * @Description: 测试Spring定时任务
 * @EnablleScheduling: 开启定时任务功能
 * @Schedule: 开启一个定时任务
 * @EnableAsync: 开启异步任务功能
 * @Async: 开启一个异步任务
 * 开启定时任务的自动配置类: TaskSchedulingAutoConfiguration
 * 开启异步任务的自动配置类: TaskExecutionAutoConfiguration
 */
@EnableScheduling
@EnableAsync
@Component
@Slf4j
public class TestSchedule {
    /**
     * 1.Spring的cron表达式不支持第7为的年
     * 2.周的位置1-7表示周一到周日
     * 3.默认的定时任务都是串行，如果上一个定时任务没有执行完，下一个定时任务不能执行
     * 解决任务串行的办法：
     * 1.将业务逻辑以异步的方式运行
     * 2.设置定时任务线程池的大小(可能不会生效)
     * 3.将定时任务变为异步执行
     */
//    @Scheduled(cron = "* * * * * 3")
////    @Scheduled(cron = "*/5 * * * * 3")
//    @Async
//    public void test() throws InterruptedException {
//        log.info("hello");
//        Thread.sleep(3000);
//    }
}
